package org.upo.eps.it.phama.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@Entity
@Table(name="far_pedido_proveedor", catalog="phama")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "pedidoProveedor")
public class PedidoProveedor  implements Serializable {

     @Id 
     @GeneratedValue(strategy = IDENTITY)
     @Column(name="ID_PEDIDO_PRO", unique=true, nullable=false)
     private Integer idPedidoPro;
     
     @ManyToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="ESTADO", nullable=false)
     private Estado estado;
     
     @ManyToOne(fetch=FetchType.EAGER)
     @JoinColumn(name="ID_PROVEEDOR", nullable=false)
     private Proveedor proveedor;
     
     @Temporal(TemporalType.DATE)
     @Column(name="FECHA", length=10)
     private Date fecha;
     
     @Column(name="NOTAS")
     private String notas;
     
     @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="pedidoProveedor")
     private Set<DetallePedPro> misDetallesPedPro = new HashSet<>(0);

     //<editor-fold defaultstate="collapsed" desc="constructors">
     public PedidoProveedor() {
     }
     
     public PedidoProveedor(Estado estado, Proveedor proveedor, Date fecha, String notas) {
         this.estado = estado;
         this.proveedor = proveedor;
         this.fecha = fecha;
         this.notas = notas;
     }
     
     public PedidoProveedor(Estado estado, Proveedor proveedor, Date fecha, String notas, Set<DetallePedPro> misDetallesPedPro) {
         this.estado = estado;
         this.proveedor = proveedor;
         this.fecha = fecha;
         this.notas = notas;
         this.misDetallesPedPro = misDetallesPedPro;
     }
     //</editor-fold>
   
     //<editor-fold defaultstate="collapsed" desc="getters & setters">
     public Integer getIdPedidoPro() {
         return this.idPedidoPro;
     }
     
     public void setIdPedidoPro(Integer idPedidoPro) {
         this.idPedidoPro = idPedidoPro;
     }
     
     public Estado getEstado() {
         return this.estado;
     }
     
     public void setEstado(Estado estado) {
         this.estado = estado;
     }
     
     public Proveedor getProveedor() {
         return this.proveedor;
     }
     
     public void setProveedor(Proveedor proveedor) {
         this.proveedor = proveedor;
     }
     
     public Date getFecha() {
         return this.fecha;
     }
     
     public void setFecha(Date fecha) {
         this.fecha = fecha;
     }
     
     public String getNotas() {
         return this.notas;
     }
     
     public void setNotas(String notas) {
         this.notas = notas;
     }
     
     public Set<DetallePedPro> getMisDetallesPedPro() {
         return this.misDetallesPedPro;
     }
     
     public void setMisDetallesPedPro(Set<DetallePedPro> misDetallesPedPro) {
         this.misDetallesPedPro = misDetallesPedPro;
     }
     //</editor-fold>

}


